/*
 * @Author: HeAo
 * @Date: 2022-09-16 11:00:22
 * @LastEditTime: 2022-09-16 17:22:08
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \第二阶段\ES6\day04迭代器\4-map集合.js
 * 别乱动！
 */
// 类似于对象  Object：字符串—值  Map：值—值
let obj = {
  name: 'zhangsan',
  age: 12
}
console.log(obj);
//1、遍历键值对组成的数组
let res = Object.entries(obj)
// console.log(res); //[ [ 'name', 'zhangsan' ], [ 'age', 12 ] ]

// 2、创建一个map集合 构造函数  优点：map可以接收任意数据类型作为键名
//将数组作为参数放到Map中
let map = new Map(res)
// console.log(map); //Map(2) { 'name' => 'zhangsan', 'age' => 12 }

// 3、给map添加成员
// 引用数据类型 使用变量接收引用数据类型的地址
let temp = {
  name: 'lisi'
}
// 添加以temp为键  hello为值得键值对
map.set(temp, 'hello')
console.log(map);

// 4、删除map成员
map.delete(temp)
map.delete('name')
console.log(map);

// 5、获取map属性
console.log(map.get(temp));

// 6、遍历
console.log(map.keys()); //[Map Iterator] { 'name', 'age', { name: 'lisi' } } 键
console.log(map.values()); //[Map Iterator] { 'zhangsan', 12, 'hello' } 值
console.log(map.entries()); // [Map Entries] {[ 'name', 'zhangsan' ],[ 'age', 12 ],[ { name: 'lisi' }, 'hello' ]}
for (let k of map.keys()) {
  console.log(k);
}
// 遍历每个键值对 的键和值
let result = map.forEach((key, value) => {
  console.log(key, value);
});